[レポート] QTC002 Amazon Braket でのハイブリッド量子機械学習ワークロード #reinvent
AWS事業本部 梶原@福岡オフィスです。 ラスベガスで開催されているre:Invent2022に参加しています。 今回はこちらのシアターセッションに参加してきたのでレポートしたいと思います。
※※※
本セッションレポートは、現地での聞き取りまた、Google翻訳, DeepL翻訳等を使用しつつレポートしております。
内容には十分注意して作成しておりますが、誤訳または誤って理解している部分がある可能性があることをご容赦いただければと思います。
※※※
セッション概要
タイトル
Hybrid quantum machine learning workloads on Amazon Braket
概要
Quantum computers hold the promise to outperform even the most-powerful classical computers on a range of computational problems. The near-term focus of quantum computing applications is on hybrid algorithms, where noisy, near-term quantum computers are used as co-processors within a larger classical optimization loop. Quantum machine learning is a special type of hybrid quantum-classical workload that makes use of the unique properties of quantum computing. In this session, a demo steps through a typical quantum machine learning workflow, including uploading data, monitoring training, and tuning hyperparameters using Amazon Braket Hybrid Jobs.
量子コンピュータは、様々な計算問題において、最も強力な古典的コンピュータを凌駕する性能を発揮することが期待されています。量子コンピュータは、古典的な最適化ループの中で、ノイズの少ない近未来の量子コンピュータをコプロセッサとして使用するハイブリッドアルゴリズムに重点を置いています。量子機械学習は、量子コンピューティングのユニークな特性を利用したハイブリッド量子古典的ワークロードの特殊なタイプです。本セッションでは、Amazon Braket Hybrid Jobsを用いたデータのアップロード、学習のモニタリング、ハイパーパラメータのチューニングなど、典型的な量子機械学習のワークフローをデモで紹介します。
スピーカー
Katharine Hyatt, Applied Scientist, AWS
セッション内容
Quantum machine lerning in Amazon Braket Hybrid Jobs
- ハイブリッドジョブを使った量子機械学習についてお話します。
- 典型的な量子機械学習のワークフローのデモを行います
- 教師なし学習を使って、データのアップロード、学習のモニタリング
- ハイパーパラメータの調整し、解析を行う方法を紹介します
- 未知の対象確率分布から合成サンプルを生成してみたいとおもいます
- これは伝統的にかなり難しいことにあたります
- 私たちは、より小さなスケールで、量子の波動関数と分布に適合させようとしています。
- 量子コンピューターが、この種のタスクに最適な選択である理由は、使用するキュービットの数に応じて指数関数的に増加するためです。
- 比較的少ない量子ビットの場合は、事後分布を完全に把握するために、それほど多くの変数は必要ではありません。
- 量子ビットの数が増えてくると、それらを表現するために2~n個の可能な変数が必要になります。そして、この問題は、古典的なスーパーコンピュータでは行不可能になります。
- 私たちの目標は、このターゲット分布を学習することです。 そして、これをいわゆる最大平均不一致損失を使用して実行します。
- 最終的には分布の各要素の平均不一致を測定することになります。その平均をとれば、それが学習手順全体の損失となります。
- この問題を表現するために使用する回路は、量子回路ボルンマシンと呼ばれるものです。量子回路ボルンマシンは、状態ベクトルマシンと同じようなもので、比較的小さなプリミティブでありながら、かなり表現力があり、入門用として適しています
Quantum Circuit Born Machine
- サードパーティのソフトウェア「Penny Lane」を使います。
- 「Penny Lane」、便利な埋め込み関数が多数用意されています。
- 回路を表示することも可能です
- この回路で、先ほど説明した損失関数を使ってパラメータを訓練し、ある量子波動関数に適合させようとするものです。
Generate training data set
Training the circuit locally
- ローカル回路を使ってトレーニングを行うことができます。
- Braket Local シミュレーターをセットアップすることができるようになりました。
- このローカルシミュレーターは、ラップトップやノートブックのインスタンスの下で実際に動作します。利用できなくなる心配はありません
- 完全にハードウェア制御で動きます。非常に高性能で、簡単に体験できるような小さなシミュレータを、その上で動かすこともできます。
- またハイブリッドジョブも可能です。
- 今回は正確な状態ベクトルシミュレータを使いますが、ノイズのシミュレーションに興味があれば、密度行列のローカルシミュレータも用意されています。
- scipyを使用して、シンプルな最適化を実行します
- Braket上で動作させることができました
Hyperparameters
- もっと多くのイテレーションで実行してみましょう。
- 実際には、20個のイテレーションで実行します。
- 2つのレイヤーで、もう一度、Braketジョブを作成して実行します。
- QCBMジョブというジョブスクリプトがありますので、そのスクリプトを使用するように指示します。
- 先ほど少し実行したので、ジョブがキューに入れられたことがわかります。
Metrics and plotting
- Cloud watchからメトリクスをダウンロードし、ジョブがどのように動作したかを確認できます。
- 確率振幅の分布をプロットしてみます。
- 学習手順がどの程度うまくいったかを視覚化することができます。
- 緑が学習手順で生成された結果で、青が複製しようとした関数です。
- 良い結果がえられたと思います。わずか20回の繰り返しで、最終的な分布のかなり良い表現ができ、それを使ってシンボルを生成することができました。
- これはかなり小さな問題です。もしもっと大きな問題で実行し、もっと時間をかけたら、もっと大きな探索空間でも、良い結果を得られることが期待できます。
Running different hyperparameters
- 最後に紹介するのは、さまざまな種類のプログラムを実行する能力です。
- ハイパーパラメーターでジョブの実行方法を調整したり、このプロセスの一環として複数のジョブを並行して実行することもできます。
- レイヤーを増やすと、ランニングコストが高くなります。
- 実行にはコストがかかりますが 精度が上がるかもしれません
量子回路ボルンの層数を変えてみることにします。
- 2層か3層で実行すれば、それ以上の層で学習するよりもかなり速く、それなりに良い結果が得られるようです。この問題のスイートスポットは3層程度だと思われます。
- このような問題に対して何が正しい学習手順なのか、何層をターゲットにすればいいのかを考えようとしているなら、ハイブリッドジョブを使えば、この種の再現性のある実験を行うことができます
感想
QCT001 と引き続いて、Amazon Braketの量子コンピュータを用いたハイブリッド機械学習についてのデモでした。
ローカルシミュレータを使用して、実験をしていく手順など短い時間ではありましたがステップバイステップで実施されており、とてもわかりやすいものでした。
実際に使用されているNodebookのコードなどは公開されていようでしたが、同様なサンプルを先日発表された。Amazon Braket Algotihm Librayで見つけることができましたので、機会があれば試してみたいと思います。
量子コンピュータ自体はまだ量子ビット数、ノイズの問題などがありますが、このように機械学習のコプロセッサとして使うとりくみはとてもおもしろいと感じました。
参考情報
Amazon Braket Algorithm Library
https://github.com/aws-samples/amazon-braket-algorithm-library
Quantum Circuit Born Machine
Quantum machine learning in Amazon Braket Hybrid Jobs